/*
 * @Author: Tim
 * @Date: 2020-08-11 11:26:06
 * @LastEditTime: 2020-08-11 11:46:35
 * @LastEditors: Please set LastEditors
 * @Description: 小程序相关的本地api封装 && tool工具类
 * @FilePath: /afire/utils/MPTools.class.js
 */

///文件标识
const TAG = '[MPTools.class.js]';
export default class MPTools {

    /**
     * @description 检测网络状态方案
     * @return {*} Promise
     */
    static checkNetWork() {
        return new Promise((resolve, reject) => {
            uni.getNetworkType({
                success: function (res) {
                    // 返回网络类型, 有效值：
                    // wifi/2g/3g/4g/unknown(Android下不常见的网络类型)/none(无网络)
                    let networkType = res.networkType;
                    if (networkType === "none") {
                        console.warn("current network is none.");
                        reject({
                            code: "NETWORK_ERR",
                            msg: "当前网络不可用"
                        });
                        return;
                    }
                    resolve();
                },
                fail: function (err) {
                    console.error(err);
                    reject();
                }
            });
        });
    }

    /**
     * 扫描二维码
     */
    static scanQrCode() {
        return new Promise((resolve, reject) => {
            try {
                // 允许从相机和相册扫码
                uni.scanCode({
                    scanType: ['qrCode'],

                    success: function (res) {
                        console.log(TAG, 'scanQrCode() --->', '条码类型：' + res.scanType);
                        if (res.scanType != 'QR_CODE') {
                            return reject({
                                msg: '请扫描正确的二维码'
                            });
                        }

                        console.log('scanQrCode() --->', '条码内容：' + res.result);
                        if (!res.result) {
                            return reject({
                                msg: '扫描的二维码内容为空~'
                            });
                        }

                        resolve(res.result);
                    },

                    fail: function (err) {
                        reject();
                    }
                });
            } catch (err) {
                reject(err);
            }
        })
    }


    /**
     * 获取位置信息
     */
    static getLocationInfo() {
        return new Promise((resolve, reject) => {
            try {
                uni.getLocation({
                    type: 'gcj02', //'wgs84',
                    success(res) {
                        const latitude = res.latitude;
                        const longitude = res.longitude;
                        const speed = res.speed;
                        const accuracy = res.accuracy;
                        const altitude = res.altitude;

                        let ret = {
                            lat: latitude,
                            lng: longitude,
                            speed,
                            accuracy,
                            altitude
                        }

                        resolve(ret);
                    },

                    fail(err) {
                        console.log(TAG, 'getLocationInfo() --->', err);
                        reject();
                    }
                });
            } catch (err) {
                console.error(TAG, 'getLocationInfo() --->', err);
                reject();
            }
        });
    }


    /**
     * 扫描条形码
     */
    static scanBarCode() {
        return new Promise((resolve, reject) => {
            try {
                // 允许从相机和相册扫码
                uni.scanCode({
                    // scanType: ['barCode'],
                    success(res) {
                        console.log(TAG, 'scanBarCode() --->', '条码类型：' + res.scanType);

                        if (res.scanType === 'QR_CODE') {
                            modal.toast('请扫描条形码~');
                            return reject();
                        }

                        console.log(TAG, 'scanBarCode() --->', '条码内容：' + res.result);
                        if (!res.result) {
                            modal.toast('扫描的条形码内容为空~');
                            return reject();
                        }

                        resolve(res.result);
                    },

                    fail(err) {
                        console.error(TAG, 'scanBarCode() --->', err);
                        reject();
                    }
                });
            } catch (err) {
                reject(err)
            }
        });
    }


    /**
     * 图片picker
     * @param {*} count 
     * @param {*} onlyCompressed 
     */
    static chooseImage(count = 1, onlyCompressed = false) {
        //默认最多一次只能传9张
        if (count > 9) count = 9;

        return new Promise((resolve, reject) => {
            uni.chooseImage({
                count,
                sizeType: onlyCompressed ? ['original'] : ['original', 'compressed'],
                sourceType: ['album', 'camera'],
                success(res) {
                    // tempFilePath可以作为img标签的src属性显示图片
                    const tempFilePaths = res.tempFilePaths;
                    console.log(TAG, 'chooseImage() --->', tempFilePaths);
                    resolve(tempFilePaths);
                },
                fail(err) {
                    reject(err);
                }
            })
        });
    }

    /**
     * 检测蓝牙是否可用
     */
    static checkCanUseBle() {
        return new Promise((resolve, reject) => {
            if (!uni.openBluetoothAdapter) {
                console.error(TAG, 'checkCanUseBle() --->', '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。');
                return reject({
                    msg: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
                });
            }

            resolve();
        })
    }
}